EP3. LLM의 수학적 기초

한 줄 요약: 정해(방정식)와 통계적 해법(데이터 근사)의 차이를 출발점으로 신경망의 가중치·편향·편미분 경사하강법·활성화 함수·모델 계열(MLP·CNN·RNN·Transformer)을 정리합니다.


1. 주제 정의

이 강의는 LLM을 포함한 모든 신경망의 수학적 토대를 두 가지 패러다임으로 정의합니다.

정해 (Determinate Solution) 방정식처럼 "참이 되게 하는 값이 딱 정해져 있는 경우"입니다. 2x + 3 = 7에서 x = 2가 유일한 답이며, 가우스 소거법(Gaussian Elimination)처럼 수식화하여 완전한 해를 얻습니다.

통계적 해법 (Statistical Solution) 현실 데이터는 "엉망진창"이며 딱 떨어지지 않습니다. 통계적 해법은 데이터 분포를 가장 잘 설명하는 근사한 최적식을 도출합니다. 모든 샘플 데이터와 정확히 일치하지는 않지만, 전반적인 경향을 가장 근사하게 만드는 것이 목표입니다.

신경망(Neural Network)은 통계적 해법의 확장이지만, 사고 방식이 완전히 다릅니다. 수많은 인자(가중치와 편향)로 구성된 식을 먼저 만들고(모델), 데이터를 통해 편미분 경사하강법으로 그 인자들을 점진적으로 조정합니다(학습).


2. 풀려는 문제

신경망은 다음 문제들을 통계적으로 해결합니다.

  1. 분류 (Classification): 로지스틱 회귀(Logistic Regression)처럼 데이터를 A 집단과 B 집단으로 나누는 최적 경계선을 찾습니다. 퍼셉트론과 MLP가 여기에 특화됩니다.

  2. 회귀 (Regression): 선형 회귀(Linear Regression)처럼 흩어진 데이터를 관통하는 최적의 직선 방정식을 도출합니다. 복잡한 비선형 회귀는 다층 퍼셉트론(MLP)이 처리합니다.

  3. 시계열 예측 (Sequence Prediction): 앞의 입력 상태를 기억해 뒤의 데이터를 연쇄적으로 예측합니다. "시계열"은 진짜 시간이 아니라 데이터의 순서가 있다는 뜻입니다. RNN과 LSTM이 이 문제를 담당합니다.

  4. 언어 이해 및 생성 (Language Understanding & Generation): 모든 단어가 서로 관계를 참조해 문맥을 파악합니다. Transformer가 이 문제를 해결하며, 현재 LLM의 핵심 아키텍처입니다.


3. 핵심 개념·구조

3-1. 신경망의 6 원리

입력층 → [가중치(w)·편향(b) 연산] → 활성화 함수 → 은닉층 → ... → 출력층
                ↑
     편미분 경사하강법으로 w, b 조정 (학습)
원리 설명
가중치 (weight) 입력에 곱해지는 인자. 신경망의 "신경"이 바로 이 변수들
편향 (bias) 활성화 여부를 조정하는 상수항
학습 (learning) 데이터를 넣어 가중치·편향을 점진적으로 도출하는 과정
편미분 경사하강법 각 변수를 어느 방향으로 얼마나 조절할지 알려주는 미적분 기법
추론 (inference) 학습된 모델로 새로운 값을 예측·분류
퍼셉트론 입력에 가중치를 곱해 합한 뒤 기준값 넘는지 분류하는 기본 단위

3-2. 활성화 함수 계열

퍼셉트론은 기준값을 초과하는지 분류하므로 불연속적인 값을 만들어냅니다. 이 불연속성이 신경망이 비선형 문제를 처리할 수 있는 핵심 이유입니다.

함수 수식 특징
Sigmoid σ(x) = 1/(1+e^-x) S자 곡선, 출력 0~1, 초기 이진 분류에 사용
tanh tanh(x) 출력 -1~1, Sigmoid 개선형
ReLU max(0, x) 팍 끊어지는 불연속면, 학습 속도 빠름
Leaky ReLU max(αx, x) 음수 구간 소폭 유지, dying ReLU 완화
ELU x if x≥0, α(e^x-1) if x<0 약간 연속적이면서 불연속면 생성, 최근 많이 사용
Maxout max(w1x+b1, w2x+b2) 여러 선형 함수 중 최대값 선택

💡 실무 노하우: ELU는 음수 구간이 완전히 끊기지 않아 gradient 소실이 적고, Transformer 계열 모델의 FFN(Feed-Forward Network)에서 GELU 변형과 함께 사용됩니다. PyTorch에서는 torch.nn.ELU(), torch.nn.GELU()로 즉시 사용합니다.

3-3. 신경망 모델 계열

퍼셉트론 (단층)
  └─ 다층 퍼셉트론 (MLP) ── 비선형 분류/회귀
       ├─ CNN ──────────── 이미지 특징 필터 추출
       ├─ RNN/LSTM ──────── 시계열·순서 데이터 예측
       ├─ Transformer ───── 문맥 전역 참조 (현재 주류)
       ├─ Autoencoder ───── 입력 압축·복원, 특징 학습
       └─ GAN ───────────── 두 신경망 경쟁, 실제 같은 데이터 생성

4. 구현 가이드 (Do It Yourself)

퍼셉트론과 MLP를 NumPy·PyTorch로 직접 구현합니다.

시작 전 (Before you begin)

  • 선수 조건: Python 3.10+, PyTorch 2.x (pip install torch)
  • 소요 시간: 약 30분

Step 1. NumPy로 퍼셉트론 구현

import numpy as np

def perceptron(x: np.ndarray, w: np.ndarray, b: float) -> int:
    return 1 if np.dot(w, x) + b > 0 else 0

✅ 확인: perceptron(np.array([1, 0]), np.array([0.5, -0.5]), 0.1)1


Step 2. ReLU / Sigmoid / ELU 직접 구현

def relu(x):    return np.maximum(0, x)
def sigmoid(x): return 1 / (1 + np.exp(-x))
def elu(x, alpha=1.0):
    return np.where(x >= 0, x, alpha * (np.exp(x) - 1))

✅ 확인: relu(np.array([-1, 0, 2]))[0, 0, 2]


Step 3. PyTorch로 2층 MLP 구현

import torch.nn as nn

mlp = nn.Sequential(
    nn.Linear(2, 4), nn.ReLU(),
    nn.Linear(4, 1), nn.Sigmoid()
)

✅ 확인: mlp(torch.tensor([[1.0, 0.0]])) → shape [1, 1], 값 0~1 사이


Step 4. 경사하강법으로 가중치 업데이트

import torch, torch.nn as nn, torch.optim as optim

loss_fn = nn.BCELoss()
optimizer = optim.SGD(mlp.parameters(), lr=0.01)
optimizer.zero_grad()
loss = loss_fn(mlp(x), y)
loss.backward()   # 편미분 경사하강법 실행
optimizer.step()  # 가중치·편향 업데이트

✅ 확인: loss.item()이 에폭마다 감소하면 학습 정상


Step 5. 동작 확인 (테스트)

with torch.no_grad():
    pred = mlp(torch.tensor([[1.0, 0.0]]))
    print(f"예측 확률: {pred.item():.4f}")

예상 출력: 예측 확률: 0.5xxx (미학습 상태)

✅ 확인: pred.shape == (1, 1) 이고 값이 0~1 사이면 성공


5. 적용 사례 (공신력 OSS)

아래 라이브러리는 이 강의의 개념이 실제 프로덕션 코드로 구현된 사례입니다.

  1. PyTorch (https://github.com/pytorch/pytorch) 신경망·활성화 함수 표준 라이브러리. torch.nn.Linear, torch.nn.ReLU, torch.nn.ELU 등으로 가중치·편향·활성화 함수를 즉시 구현합니다. 편미분 경사하강법은 loss.backward() 한 줄로 실행됩니다.

  2. HuggingFace Transformers (https://github.com/huggingface/transformers) Transformer 아키텍처 기반 모델(BERT, LLaMA 등)의 사실상 표준 허브입니다. from transformers import AutoModel으로 수십억 파라미터(가중치·편향)가 학습된 모델을 즉시 로드합니다.

  3. vLLM (https://github.com/vllm-project/vllm) PagedAttention과 continuous batching으로 Transformer 추론 서빙을 최적화합니다. 학습된 가중치를 GPU 메모리에 효율적으로 배치하여 추론 처리량을 극대화합니다.

  4. Anthropic Python SDK (https://github.com/anthropics/anthropic-sdk-python) Claude 모델(claude-sonnet-4-6, claude-opus-4-7 등) API 클라이언트. Transformer 기반 LLM의 추론 결과를 스트리밍으로 수신합니다.

  5. LangChain (https://github.com/langchain-ai/langchain) LLM 오케스트레이션 프레임워크(LCEL). Transformer 기반 모델의 입출력 파이프라인을 체이닝하여 RAG, Agent, Tool Calling을 구현합니다.

📚 참고: HuggingFace Course — https://huggingface.co/learn/nlp-course 에서 Transformer 아키텍처를 단계별로 학습합니다.


6. 핵심 원리

6-1. 편미분 경사하강법 (Gradient Descent via Partial Derivatives)

편미분 경사하강법은 신경망 학습의 수학적 엔진입니다. AI가 급격하게 발전한 결정적 계기가 바로 이 기법의 성공입니다.

동작 원리: 1. 현재 가중치로 예측값을 계산합니다 (순전파, forward pass) 2. 실제값과의 오차(손실)를 측정합니다 3. 손실을 각 가중치에 대해 편미분합니다 (역전파, backpropagation) 4. 기울기(gradient) 방향 반대로 가중치를 조금씩 조정합니다 5. 1~4를 반복하여 손실이 최소가 되는 최적 가중치를 찾습니다

수식: w ← w - η · ∂L/∂w (η: 학습률, L: 손실)

⚠️ 주의: 학습률(learning rate)이 너무 크면 발산하고, 너무 작으면 수렴이 느립니다. PyTorch의 torch.optim.Adam은 적응형 학습률로 이 문제를 완화합니다.

6-2. 불연속면과 비선형성

퍼셉트론이 중요한 이유는 일반적인 수학 함수(2차, 3차 함수)가 모두 연속적인데 반해, 기준값을 초과하는지 분류하는 구조가 불연속면을 만들기 때문입니다.

  • 단층 퍼셉트론: 선형 분류만 가능 (XOR 불가)
  • 다층 퍼셉트론 (MLP): 여러 불연속면을 겹쳐 복잡한 비선형 경계를 표현

💡 실무 노하우: ReLU의 "팍 끊어지는" 불연속면은 sparsity를 높여 연산 효율을 올립니다. Transformer 블록의 FFN은 Linear → GELU → Linear 구조로 ELU 계열의 완만한 불연속면을 활용합니다.


7. 변형·확장

기본 경사하강법과 활성화 함수에서 발전한 현대적 변형입니다.

변형 기반 개선 내용
Adam optimizer SGD 1차·2차 모멘텀으로 적응형 학습률
AdamW Adam weight decay 분리로 정규화 개선
LayerNorm BatchNorm 시퀀스 길이 무관, Transformer 표준
Dropout 정규화 학습 중 뉴런 무작위 비활성화
GELU ReLU Gaussian Error, Transformer FFN 표준
SwiGLU GELU LLaMA 계열 FFN에서 성능 우위
LoRA Full Fine-tune 가중치 행렬을 저랭크 분해로 파라미터 절약

📚 참고: PyTorch 공식 문서 — https://pytorch.org/docs/stable/optim.htmltorch.optim 모듈 전체 API.


8. 다른 도구·접근과의 비교

항목 PyTorch JAX TensorFlow
주요 사용처 LLM 연구·프로덕션 Google TPU 연구 엔터프라이즈 서빙
편미분 방식 autograd 동적 그래프 jax.grad 함수형 변환 tf.GradientTape
활성화 함수 torch.nn.* jax.nn.* tf.nn.*
Transformer 지원 HuggingFace 기본 백엔드 Flax/Haiku 사용 Keras 기본 백엔드
학습 곡선 완만 (pythonic) 가파름 (함수형) 중간
한국 커뮤니티 활발 연구자 중심 감소 추세

💡 실무 노하우: LLM 파인튜닝과 추론 서빙 대부분이 PyTorch + HuggingFace 조합을 사용합니다. 신규 프로젝트에서는 PyTorch를 기본으로 선택하고, Google TPU 환경이면 JAX를 검토합니다.


9. 한계·트레이드오프

9-1. Vanishing Gradient (기울기 소실)

깊은 신경망에서 역전파 시 기울기가 레이어를 거슬러 올라갈수록 0에 수렴하여 초기 레이어의 가중치가 거의 업데이트되지 않는 현상입니다.

  • Sigmoid, tanh: 출력이 포화(saturation)되면 기울기가 0에 수렴 → 깊은 망에서 치명적
  • ReLU: 음수 구간 기울기 0 (dying ReLU 문제) → Leaky ReLU, ELU로 완화
  • Transformer: Residual Connection + LayerNorm으로 근본 해결

⚠️ 주의: 100층 이상의 딥 네트워크를 Sigmoid만으로 쌓으면 학습이 실질적으로 불가능합니다. 반드시 ReLU 계열 활성화 함수와 Residual Connection을 함께 사용합니다.

9-2. 모델 크기와 비용

모델 계열 파라미터 수 GPU VRAM 학습 비용
소형 MLP 수만~수백만 1GB 미만 수 분
BERT-base 110M 4~8GB 수 시간
LLaMA-3 70B 70B 140GB+ 수백만 달러
대형 상업 LLM 수천억~수조 추정 클러스터 수천만 달러 이상

9-3. Hallucination (환각)

Transformer 기반 LLM은 통계적 해법의 한계로 확률적으로 그럴듯한 토큰을 생성합니다. 사실과 다른 내용을 자신 있게 출력할 수 있으므로, 프로덕션에서는 검색 증강 생성(RAG)과 구조화 출력(structured output)으로 완화합니다.


10. 최신 권장 패턴 (2026-05 기준)

Transformer 단일화 CNN·RNN은 특수 도메인(경량 엣지 추론, 제한적 시계열)을 제외하면 Transformer에 수렴하고 있습니다. 강의의 메타 통찰 — "이제 트랜스포머만 배우면 됨 (다른 건 과거)" — 이 실무에서도 동일하게 적용됩니다.

Mixture of Experts (MoE) Transformer 레이어 내 FFN을 여러 전문가 네트워크로 분리하여 파라미터를 늘리되 활성 연산량을 억제합니다. Mixtral 등 오픈소스 모델이 채택한 방식입니다.

Structured Output LLM의 통계적 특성(환각)을 보완하기 위해 JSON Schema·Pydantic 모델로 출력 형식을 강제합니다.

from anthropic import Anthropic
client = Anthropic()
response = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=1024,
    messages=[{"role": "user", "content": "..."}]
)

📚 참고: Anthropic Quickstart — https://docs.anthropic.com/en/docs/quickstart


11. 메타인지 자기평가

Step 1. 현재 상태 점검

다음 질문에 답합니다.

  • [ ] 정해와 통계적 해법의 차이를 한 문장으로 설명할 수 있습니까?
  • [ ] 가중치(weight)와 편향(bias)이 신경망에서 어떤 역할을 합니까?
  • [ ] 편미분 경사하강법이 없었다면 신경망이 학습할 수 없는 이유를 설명할 수 있습니까?
  • [ ] ReLU와 Sigmoid의 차이점과 각각의 약점을 말할 수 있습니까?
  • [ ] CNN, RNN, Transformer가 각각 어떤 문제를 풀도록 설계되었는지 알고 있습니까?

Step 2. 적용 가능성 점검

현재 프로젝트에서 다음 중 해당하는 항목에 체크합니다.

  • [ ] 분류 문제: 로지스틱 회귀 → MLP → Transformer 순서로 complexity를 올려 시도
  • [ ] 시계열 데이터: RNN/LSTM 대신 Transformer(Time Series Transformer) 우선 검토
  • [ ] 텍스트 처리: 무조건 Transformer (BERT, LLaMA, Claude API)
  • [ ] 이미지 처리: CNN보다 Vision Transformer (ViT) 우선 검토 (고성능 환경)

Step 3. 점진 적용

  1. torch.nn.Linear + torch.nn.ReLU로 XOR 문제를 2층 MLP로 해결합니다.
  2. HuggingFace pipeline("text-classification")으로 Transformer 분류를 체험합니다.
  3. Anthropic SDK로 claude-sonnet-4-6 API를 호출하여 Transformer 기반 언어 생성을 실습합니다.
  4. 커스텀 데이터로 LoRA 파인튜닝을 시도합니다 (HuggingFace PEFT 라이브러리 활용).
난이도
에피소드
질문
카드를 로딩 중...
답변

클릭하거나 Space를 눌러 뒤집기

0 / 0
학습 진도 0%
이동   Space 뒤집기   R 셔플